import router from './router'
import store from './store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

NProgress.configure({ showSpinner: false }) // NProgress Configuration

// const whiteList = ['/login'] // no redirect whitelist

router.beforeEach(async(to, from, next) => {
  const token = store.getters.token
  const path = to.path
  // console.log(path)
  // 白名单
  const writeArr = ['/login', '/404']
  // 如果登录了，是登录页面，则跳转到首页
  if (token && path === '/login') {
    await store.dispatch('user/getMyPermission')
    // 登录了跳转页面的时候获取用户权限
    store.dispatch('routePermissions/setRoutes', store.state.user.mypermissions)
    // console.log(store.state.user.mypermissions)
    // 开始登陆了的时候获取员工详情
    await store.dispatch('user/getUserInfoDetail')
    // router.addRoutes(store.state.routePermissions.routePermissions)
    next('/')
  }

  // 如果登录了，不是登录页面，直接允许跳转
  if (token && path !== '/login') {
    await store.dispatch('user/getMyPermission')
    // 登录了跳转页面的时候获取用户权限
    store.dispatch('routePermissions/setRoutes', store.state.user.mypermissions)
    if (!store.state.user.userInfo.id) {
      // 登录以后判断用户详情是否清空,清空了再次获取员工详情
      await store.dispatch('user/getUserInfoDetail')
      // 设置显示用户能够跳转的路由
      // console.log(store.state.routePermissions.routePermissions)
      router.addRoutes([...store.state.routePermissions.routePermissions, { path: '*', redirect: '/404', hidden: true }])
      // 因为刷新页面后路由还没有渲染出来,所以会是一个空白页,我们直接再次跳转一次就好,
      next(path)
    }
    next()
  }

  // 如果没有登录，但是在白名单中，则直接跳转
  if (!token && writeArr.includes(path)) {
    next()
  }
  // 如果没有登录，且不是登录页面，则跳转到登录页面
  if (!token && !writeArr.includes(path)) {
    next('/login')
  }
})

router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})
